import type { InternalRowData, TableColumn } from 'naive-ui/es/data-table/src/interface'
import { ComponentEnum } from '@/enum/ComponentEnum'
import type { RendererElement, RendererNode } from 'vue'

import PeaceActionBtn from '@/components/type/PeaceActionBtn'
import PeaceOption from '@/components/type/PeaceOption.ts'
import PeaceRepeatRender from '@/components/type/PeaceRepeatRender'
import { DateTypeEnum } from '@/enum/DateTypeEnum'


export interface PeaceForm{
  componentEnum: ComponentEnum
  // 如果 !!saveConfig === false,则该字段默认 true,反之默认 false,除非显示设置值
  autoExtend?: boolean
// 未定义且autoExtend===true则继承外部的key
  key?: string
  title?: string
// 是否参与新增和更新以及复制,未定义且autoExtend===true则继承外部的 peaceEditable
  disable?: boolean
  show?: boolean
// 默认true
  required?: boolean
// 数字组件
  min?: number
// 数字组件
  max?: number
// 文本组件
  maxLength?: number
  /** date组件type值,仅date使用,默认 date */
  dateType?: DateTypeEnum
// 表单校验
  validator?: (value: unknown) => boolean
// 如果未设置，则使用外层 optionConfig
  optionConfig?: PeaceOption
// 自定义渲染,用于新增和更新,复制, peaceEditRender < peaceAddRender,peaceUpdateRender
  peaceRender?: (input: object) => VNode<RendererNode, RendererElement, { [key: string]: any }>
// 渲染个数以及保存格式等
  repeatRender?: PeaceRepeatRender
}
